python位运算

这几天,在看C代码,要做一个imsi的decode 里面的代码都是用C写的,位运算什么的。看的有点乱。

由于要在pc上进行解析,所以打算用python写,那么问题来了Python进行位运算要怎么玩?

看的比较多的教程是把这方面的东西用C来写,用python调用。搜索了一些资料,其实python还是可以来为运算的,关键是尚未掌握调用技巧啊,公司加密软件折腾的!!

原博如下http://blog.csdn.net/bestallen/article/details/51763386

在数字面前添加0b 就可以用二进制表示十进制

二进制          十进制

0b1     1

0b10     2

0b11     3

=======

bin() 函数  该函数的作用是把10进制转换成二进制,是的 idle环境默认是10进制,比较坑爹的是bin()函数输出的是str类型

如果要用bin的输出进行运算,恩 就是那么简单

int(bin(25),2) + 4   

========

转换完成之后,就是这几个为运算符了,操作方法跟C一样的。万恶的与或非~~~~!!!又让我想起来数电模电的日子,恩 那段记忆只剩下好繁琐,好难,好无聊!

^   XOR   两者相异,则为1  怎么一点印象都没有啊

&  AND 与

|   OR  或

>>   右移

<<   左移

 

在使用位运算的时候经常会用到掩码,比如只保留高位/只保留低位的

higmask = 0b11110000   

lowmask = 0b00001111

 

(data & higmask) >> 4  恩 括号很重要

 

e.g:

>>> higmask = 0b11110000
>>> 73 & higmask >>4
9
>>> (73 & higmask) >>4
4

 

posted @ 2017-03-16 09:01  asges林  阅读(289)  评论(0编辑  收藏  举报